home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / m2gem106.lzh / CRYSTAL1.06 / SRC / CRYSTAL / RSRCMGR.MOD < prev    next >
Encoding:
Modula Implementation  |  1993-11-06  |  2.1 KB  |  102 lines

  1. IMPLEMENTATION MODULE RsrcMgr;
  2.  
  3. (*
  4. AES Resource Manager.
  5.  
  6. UK __DATE__ __TIME__
  7. *)
  8.  
  9. (*IMP_SWITCHES*)
  10.  
  11. FROM AES    IMPORT Control,Global,IntIn,IntOut,Addr,crystal,Version,Integer;
  12. FROM PORTAB IMPORT UNSIGNEDWORD,ANYPOINTER,NULL;
  13. #ifdef MM2
  14. FROM SYSTEM IMPORT CADR;
  15. #else
  16. FROM SYSTEM IMPORT ADR;
  17. #endif
  18. AES_SYSTEM_IMPORT
  19.  
  20. #if Seimet
  21. CONST F110 = 06E000101H;
  22.       F111 = 06F000100H;
  23.       F112 = 070020100H;
  24.       F113 = 071020101H;
  25.       F114 = 072010101H;
  26.       F115 = 073000101H;
  27. #endif
  28.  
  29. PROCEDURE load(REF Name: ARRAY OF CHAR): BOOLEAN;
  30. BEGIN
  31. #ifdef MM2
  32.   Addr[0]:= CADR(Name);
  33. #else
  34.   Addr[0]:= ADR(Name);
  35. #endif
  36.   Global.ApPTree:= NULL; (* must be set to zero *)
  37.   crystal(110,0,1,1);
  38.   RETURN IntOut[0] # 0;
  39. END load;
  40.  
  41. PROCEDURE free;
  42. BEGIN
  43.   crystal(111,0,1,0);
  44. END free;
  45.  
  46. PROCEDURE gaddr(    Type   : ResourceTypes;
  47.                     Index  : TreeIndex;
  48.                 VAR OutAddr: ANYPOINTER): BOOLEAN;
  49. BEGIN
  50.   WITH IntIn DO
  51.     Array[0]:= ORD(Type);
  52.     Array[1]:= Index;
  53.   END;
  54.   Control.SizeAddrOut:= 1;
  55.   crystal(112,2,1,0);
  56.   Control.SizeAddrOut:= 0;
  57.   OutAddr:= Addr[2];
  58.   RETURN IntOut[0] # 0;
  59. END gaddr;
  60.  
  61. PROCEDURE saddr(Type  : ResourceTypes;
  62.                 Index : TreeIndex;
  63.                 InAddr: ANYPOINTER): BOOLEAN;
  64. BEGIN
  65.   WITH IntIn DO
  66.     Array[0]:= ORD(Type);
  67.     Array[1]:= Index;
  68.   END;
  69.   Addr[0]:= InAddr;
  70.   crystal(113,2,1,1);
  71.   RETURN IntOut[0] # 0;
  72. END saddr;
  73.  
  74. PROCEDURE obfix(PTree: TreePtr;
  75.                 Ob   : ObjectIndex);
  76. BEGIN
  77.   IntIn.Array[0]:= Ob;
  78.   Addr[0]:= PTree;
  79.   crystal(114,1,1,1);
  80. END obfix;
  81.  
  82. PROCEDURE rcfix(RawRsc: RsPtr);
  83. BEGIN
  84. #if ST
  85.   IF (Version() >= 0399H) AND (Version() < 1042H) THEN
  86.     Addr[0]:= RawRsc;
  87.     crystal(115,0,1,1);
  88.   ELSE
  89.     IntOut[0]:= 0; (* error *)
  90.   END;
  91. #endif
  92. END rcfix;
  93.  
  94. BEGIN
  95.   rsrcload:= load; RsrcLoad:= rsrcload;
  96.   rsrcfree:= free; RsrcFree:= rsrcfree;
  97.   rsrcgaddr:= gaddr; RsrcGAddr:= rsrcgaddr;
  98.   rsrcsaddr:= saddr; RsrcSAddr:= rsrcsaddr;
  99.   rsrcobfix:= obfix; RsrcObFix:= rsrcobfix;
  100.   rsrcrcfix:= rcfix; RsrcRCFix:= rsrcrcfix;
  101. END RsrcMgr.
  102.